package com.juzi.regular;

public class Introduce {
    public static void main(String[] args) {
        System.out.println("--------------------------------\n" +
                "正则表示\n" +
                "正则表达式可以用一些规定的字符来制定规则，并用来校验数据格式的合法性。\n" +
                "--------------------------------\n" +
                "字符串对象提供了匹配正则表达式的方法\n" +
                "public boolean matches\u200B(String regex): 判断是否匹配正则表达式，匹配返回true，不匹配返回false。\n" +
                "--------------------------------\n" +
                "字符类(默认匹配一个字符)\n" +
                "[abc]          只能是a, b, 或c\n" +
                "[^abc]         除了a, b, c之外的任何字符\n" +
                "[a-zA-Z]       a到z A到Z，包括（范围）\n" +
                "[a-d[m-p]]     a到d，或m通过p：（[a-dm-p]联合）\n" +
                "[a-z&&[def]]   d, e, 或f(交集)\n" +
                "[a-z&&[^bc]]   a到z，除了b和c：（[ad-z]减法）\n" +
                "[a-z&&[^m-p]]  a到z，除了m到p：（[a-lq-z]减法）\n" +
                "--------------------------------\n" +
                "预定义的字符类(默认匹配一个字符)\n" +
                ".      任何字符\n" +
                "\\d    一个数字： [0-9]\n" +
                "\\D    非数字： [^0-9]\n" +
                "\\s    一个空白字符： [ \\t\\n\\x0B\\f\\r]\n" +
                "\\S    非空白字符： [^\\s]\n" +
                "\\w    [a-zA-Z_0-9] 英文、数字、下划线\n" +
                "\\W    [^\\w] 一个非单词字符\n" +
                "--------------------------------\n" +
                "贪婪的量词（配合匹配多个字符）\n" +
                "X?         X , 一次或根本不\n" +
                "X*         X，零次或多次\n" +
                "X+         X , 一次或多次\n" +
                "X {n}      X，正好n次\n" +
                "X {n, }    X，至少n次\n" +
                "X {n,m}    X，至少n但不超过m次\n" +
                "\n" +
                "\n" +
                "System.out.println(\"a\".matches(\"[abc]\")); // true\n" +
                "System.out.println(\"z\".matches(\"[abc]\")); // false\n" +
                "System.out.println(\"ab\".matches(\"[abc]\")); // false\n" +
                "System.out.println(\"ab\".matches(\"[abc]+\")); //true\n" +
                "--------------------------------\n" +
                "1、String类的哪个方法可以与正则表达式进行匹配。\n" +
                "public boolean matches\u200B(String regex): \n" +
                "判断是否匹配正则表达式，匹配返回true，不匹配返回false。\n" +
                "--------------------------------\n" +
                "正则表达式在字符串方法中的使用\n" +
                "方法名                                                                        说明\n" +
                "public String replaceAll(String regex,String newStr)          按照正则表达式匹配的内容进行替换\n" +
                "public String[] split(String regex):                          按照正则表达式匹配的内容进行分割字符串，反回一个字符串数组。\n" +
                "--------------------------------\n" +
                "正则表达式支持爬取信息\n" +
                "String rs = \"来黑马程序学习Java,电话020-43422424，或者联系邮箱\" +\n" +
                "        \"itcast@itcast.cn,电话18762832633，0203232323\" +\n" +
                "        \"邮箱bozai@itcast.cn，400-100-3233 ，4001003232\";\n" +
                "// 需求：从上面的内容中爬取出 电话号码和邮箱。\n" +
                "// 1.定义爬取规则\n" +
                "String regex = \"(\\\\w{1,}@\\\\w{2,10}(\\\\.\\\\w{2,10}){1,2})|\" +\n" +
                "        \"(1[3-9]\\\\d{9})|(0\\\\d{2,5}-?\\\\d{5,15})|400-?\\\\d{3,8}-?\\\\d{3,8}\";\n" +
                "// 2.编译正则表达式成为一个匹配规则对象\n" +
                "Pattern pattern = Pattern.compile(regex);\n" +
                "// 3.通过匹配规则对象得到一个匹配数据内容的匹配器对象\n" +
                "Matcher matcher = pattern.matcher(rs);\n" +
                "// 4.通过匹配器去内容中爬取出信息\n" +
                "while(matcher.find()){\n" +
                "    System.out.println(matcher.group());\n" +
                "}\n" );
    }
}
